//! 程序员相关字符集
//! 
//! 包含编程、开发、调试等相关的字符和图标

use std::collections::HashMap;
use crate::CharacterSet;

/// 获取程序员相关字符集
pub fn get_programmer_characters() -> HashMap<String, CharacterSet> {
    let mut characters = HashMap::new();

    // Git相关
    characters.insert("git".to_string(),
        CharacterSet::new()
            .simple("📦")
            .icon("📦")
            .bold("📦")
    );

    characters.insert("commit".to_string(),
        CharacterSet::new()
            .simple("💾")
            .icon("💾")
            .bold("💾")
    );

    characters.insert("branch".to_string(),
        CharacterSet::new()
            .simple("🌿")
            .icon("🌿")
            .bold("🌿")
    );

    characters.insert("merge".to_string(),
        CharacterSet::new()
            .simple("🔀")
            .icon("🔀")
            .bold("🔀")
    );

    characters.insert("pull_request".to_string(),
        CharacterSet::new()
            .simple("🔀")
            .icon("🔀")
            .bold("🔀")
    );

    characters.insert("push".to_string(),
        CharacterSet::new()
            .simple("⬆")
            .icon("⬆️")
            .bold("⬆")
    );

    characters.insert("pull".to_string(),
        CharacterSet::new()
            .simple("⬇")
            .icon("⬇️")
            .bold("⬇")
    );

    // 编程语言相关
    characters.insert("code".to_string(),
        CharacterSet::new()
            .simple("</>")
            .icon("💻")
            .bold("</>")
    );

    characters.insert("programming".to_string(),
        CharacterSet::new()
            .simple("</>")
            .icon("💻")
            .bold("</>")
    );

    characters.insert("function".to_string(),
        CharacterSet::new()
            .simple("ƒ")
            .icon("🔧")
            .bold("ƒ")
    );

    characters.insert("method".to_string(),
        CharacterSet::new()
            .simple("ƒ")
            .icon("🔧")
            .bold("ƒ")
    );

    characters.insert("class".to_string(),
        CharacterSet::new()
            .simple("📦")
            .icon("📦")
            .bold("📦")
    );

    characters.insert("object".to_string(),
        CharacterSet::new()
            .simple("📦")
            .icon("📦")
            .bold("📦")
    );

    characters.insert("variable".to_string(),
        CharacterSet::new()
            .simple("var")
            .icon("📝")
            .bold("var")
    );

    characters.insert("constant".to_string(),
        CharacterSet::new()
            .simple("const")
            .icon("🔒")
            .bold("const")
    );

    characters.insert("array".to_string(),
        CharacterSet::new()
            .simple("[]")
            .icon("📋")
            .bold("[]")
    );

    characters.insert("list".to_string(),
        CharacterSet::new()
            .simple("[]")
            .icon("📋")
            .bold("[]")
    );

    characters.insert("dictionary".to_string(),
        CharacterSet::new()
            .simple("{}")
            .icon("📚")
            .bold("{}")
    );

    characters.insert("hash".to_string(),
        CharacterSet::new()
            .simple("{}")
            .icon("📚")
            .bold("{}")
    );

    characters.insert("string".to_string(),
        CharacterSet::new()
            .simple("\"\"")
            .icon("📄")
            .bold("\"\"")
    );

    characters.insert("number".to_string(),
        CharacterSet::new()
            .simple("123")
            .icon("🔢")
            .bold("123")
    );

    characters.insert("boolean".to_string(),
        CharacterSet::new()
            .simple("TF")
            .icon("🔘")
            .bold("TF")
    );

    // 调试相关
    characters.insert("bug".to_string(),
        CharacterSet::new()
            .simple("🐛")
            .icon("🐛")
            .bold("🐛")
    );

    characters.insert("debug".to_string(),
        CharacterSet::new()
            .simple("🐛")
            .icon("🐛")
            .bold("🐛")
    );

    characters.insert("error_log".to_string(),
        CharacterSet::new()
            .simple("📋")
            .icon("📋")
            .bold("📋")
    );

    characters.insert("warning_log".to_string(),
        CharacterSet::new()
            .simple("⚠")
            .icon("⚠️")
            .bold("⚠")
    );

    characters.insert("info_log".to_string(),
        CharacterSet::new()
            .simple("ℹ")
            .icon("ℹ️")
            .bold("ℹ")
    );

    characters.insert("debug_log".to_string(),
        CharacterSet::new()
            .simple("🔍")
            .icon("🔍")
            .bold("🔍")
    );

    // 开发流程相关
    characters.insert("feature".to_string(),
        CharacterSet::new()
            .simple("✨")
            .icon("✨")
            .bold("✨")
    );

    characters.insert("enhancement".to_string(),
        CharacterSet::new()
            .simple("✨")
            .icon("✨")
            .bold("✨")
    );

    characters.insert("refactor".to_string(),
        CharacterSet::new()
            .simple("♻")
            .icon("♻️")
            .bold("♻")
    );

    characters.insert("refactoring".to_string(),
        CharacterSet::new()
            .simple("♻")
            .icon("♻️")
            .bold("♻")
    );

    characters.insert("hotfix".to_string(),
        CharacterSet::new()
            .simple("🔥")
            .icon("🔥")
            .bold("🔥")
    );

    characters.insert("patch".to_string(),
        CharacterSet::new()
            .simple("🔧")
            .icon("🔧")
            .bold("🔧")
    );

    characters.insert("release".to_string(),
        CharacterSet::new()
            .simple("🚀")
            .icon("🚀")
            .bold("🚀")
    );

    characters.insert("deploy".to_string(),
        CharacterSet::new()
            .simple("🚀")
            .icon("🚀")
            .bold("🚀")
    );

    characters.insert("build".to_string(),
        CharacterSet::new()
            .simple("🔨")
            .icon("🔨")
            .bold("🔨")
    );

    characters.insert("compile".to_string(),
        CharacterSet::new()
            .simple("🔨")
            .icon("🔨")
            .bold("🔨")
    );

    characters.insert("test".to_string(),
        CharacterSet::new()
            .simple("🧪")
            .icon("🧪")
            .bold("🧪")
    );

    characters.insert("testing".to_string(),
        CharacterSet::new()
            .simple("🧪")
            .icon("🧪")
            .bold("🧪")
    );

    characters.insert("unit_test".to_string(),
        CharacterSet::new()
            .simple("🧪")
            .icon("🧪")
            .bold("🧪")
    );

    characters.insert("integration_test".to_string(),
        CharacterSet::new()
            .simple("🔗")
            .icon("🔗")
            .bold("🔗")
    );

    // 性能相关
    characters.insert("performance".to_string(),
        CharacterSet::new()
            .simple("⚡")
            .icon("⚡")
            .bold("⚡")
    );

    characters.insert("speed".to_string(),
        CharacterSet::new()
            .simple("⚡")
            .icon("⚡")
            .bold("⚡")
    );

    characters.insert("memory".to_string(),
        CharacterSet::new()
            .simple("💾")
            .icon("💾")
            .bold("💾")
    );

    characters.insert("cpu".to_string(),
        CharacterSet::new()
            .simple("🖥")
            .icon("🖥️")
            .bold("🖥")
    );

    characters.insert("disk".to_string(),
        CharacterSet::new()
            .simple("💿")
            .icon("💿")
            .bold("💿")
    );

    characters.insert("network".to_string(),
        CharacterSet::new()
            .simple("🌐")
            .icon("🌐")
            .bold("🌐")
    );

    // 数据库相关
    characters.insert("database".to_string(),
        CharacterSet::new()
            .simple("🗄")
            .icon("🗄️")
            .bold("🗄")
    );

    characters.insert("db".to_string(),
        CharacterSet::new()
            .simple("🗄")
            .icon("🗄️")
            .bold("🗄")
    );

    characters.insert("table".to_string(),
        CharacterSet::new()
            .simple("📊")
            .icon("📊")
            .bold("📊")
    );

    characters.insert("query".to_string(),
        CharacterSet::new()
            .simple("🔍")
            .icon("🔍")
            .bold("🔍")
    );

    characters.insert("sql".to_string(),
        CharacterSet::new()
            .simple("SQL")
            .icon("🗄️")
            .bold("SQL")
    );

    characters.insert("nosql".to_string(),
        CharacterSet::new()
            .simple("NoSQL")
            .icon("🗄️")
            .bold("NoSQL")
    );

    // 服务器相关
    characters.insert("server".to_string(),
        CharacterSet::new()
            .simple("🖥")
            .icon("🖥️")
            .bold("🖥")
    );

    characters.insert("api".to_string(),
        CharacterSet::new()
            .simple("🔌")
            .icon("🔌")
            .bold("🔌")
    );

    characters.insert("endpoint".to_string(),
        CharacterSet::new()
            .simple("🔌")
            .icon("🔌")
            .bold("🔌")
    );

    characters.insert("rest".to_string(),
        CharacterSet::new()
            .simple("REST")
            .icon("🔌")
            .bold("REST")
    );

    characters.insert("graphql".to_string(),
        CharacterSet::new()
            .simple("GraphQL")
            .icon("🔌")
            .bold("GraphQL")
    );

    characters.insert("microservice".to_string(),
        CharacterSet::new()
            .simple("🔧")
            .icon("🔧")
            .bold("🔧")
    );

    // 容器相关
    characters.insert("container".to_string(),
        CharacterSet::new()
            .simple("📦")
            .icon("📦")
            .bold("📦")
    );

    characters.insert("docker".to_string(),
        CharacterSet::new()
            .simple("🐳")
            .icon("🐳")
            .bold("🐳")
    );

    characters.insert("kubernetes".to_string(),
        CharacterSet::new()
            .simple("☸")
            .icon("☸️")
            .bold("☸")
    );

    characters.insert("k8s".to_string(),
        CharacterSet::new()
            .simple("☸")
            .icon("☸️")
            .bold("☸")
    );

    // 云服务相关
    characters.insert("cloud_compute".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    characters.insert("aws".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    characters.insert("azure".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    characters.insert("gcp".to_string(),
        CharacterSet::new()
            .simple("☁")
            .icon("☁️")
            .bold("☁")
    );

    // 安全相关
    characters.insert("security".to_string(),
        CharacterSet::new()
            .simple("🔒")
            .icon("🔒")
            .bold("🔒")
    );

    characters.insert("encryption".to_string(),
        CharacterSet::new()
            .simple("🔐")
            .icon("🔐")
            .bold("🔐")
    );

    characters.insert("auth".to_string(),
        CharacterSet::new()
            .simple("🔑")
            .icon("🔑")
            .bold("🔑")
    );

    characters.insert("authentication".to_string(),
        CharacterSet::new()
            .simple("🔑")
            .icon("🔑")
            .bold("🔑")
    );

    characters.insert("authorization".to_string(),
        CharacterSet::new()
            .simple("🛡")
            .icon("🛡️")
            .bold("🛡")
    );

    characters.insert("permission".to_string(),
        CharacterSet::new()
            .simple("🛡")
            .icon("🛡️")
            .bold("🛡")
    );

    // 监控相关
    characters.insert("monitoring".to_string(),
        CharacterSet::new()
            .simple("📊")
            .icon("📊")
            .bold("📊")
    );

    characters.insert("metrics".to_string(),
        CharacterSet::new()
            .simple("📈")
            .icon("📈")
            .bold("📈")
    );

    characters.insert("logging".to_string(),
        CharacterSet::new()
            .simple("📝")
            .icon("📝")
            .bold("📝")
    );

    characters.insert("alert".to_string(),
        CharacterSet::new()
            .simple("🚨")
            .icon("🚨")
            .bold("🚨")
    );

    // 工具相关
    characters.insert("tool".to_string(),
        CharacterSet::new()
            .simple("🔧")
            .icon("🔧")
            .bold("🔧")
    );

    characters.insert("ide".to_string(),
        CharacterSet::new()
            .simple("💻")
            .icon("💻")
            .bold("💻")
    );

    characters.insert("editor".to_string(),
        CharacterSet::new()
            .simple("📝")
            .icon("📝")
            .bold("📝")
    );

    characters.insert("terminal".to_string(),
        CharacterSet::new()
            .simple("💻")
            .icon("💻")
            .bold("💻")
    );

    characters.insert("command".to_string(),
        CharacterSet::new()
            .simple("$")
            .icon("💻")
            .bold("$")
    );

    characters.insert("cli".to_string(),
        CharacterSet::new()
            .simple("$")
            .icon("💻")
            .bold("$")
    );

    characters
}
